package afu.project.core.filter.loadbalance;

import afu.project.common.config.ServiceInstance;
import afu.project.core.context.GatewayContext;

/**
 * 负载均衡策略顶级接口
 */
public interface LoadBalanceRule {
    /**
     * 通过上下文参数获取服务实例
     *
     * @param ctx
     * @param gray
     * @return
     */
    ServiceInstance choose(GatewayContext ctx, boolean gray);

    /**
     * 通过服务ID拿到对应的服务实例
     *
     * @param serviceId
     * @param gray
     * @return
     */
    ServiceInstance chooseByServiceId(String serviceId, boolean gray);
}
